package com.demarc.pesquisas.web.mb.entrevistador;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import com.demarc.pesquisas.infraestrutura.persistencia.Filtro;
import com.demarc.pesquisas.negocio.entidade.entrevistador.Entrevistador;
import com.demarc.pesquisas.negocio.service.entrevistador.IEntrevistadorService;
import com.demarc.pesquisas.negocio.util.ConstantesMensagens;
import com.demarc.pesquisas.web.jsf.ListaObjetoPersistenteDataModel;
import com.demarc.pesquisas.web.mb.AbstractMB;
import com.demarc.pesquisas.web.pagina.ConstantesPaginas;
import com.demarc.pesquisas.web.pagina.OperacaoEnum;

@ManagedBean
@SessionScoped
public class EntrevistadorMB extends AbstractMB {

    @ManagedProperty(value = "#{entrevistadorService}")
    private IEntrevistadorService entrevistadorService;

    private Entrevistador entrevistadorFiltro;
    private Entrevistador entrevistador;
    private ListaObjetoPersistenteDataModel<Entrevistador> dataModel;

    @Override
    public String getTituloPagina() {
        return super.getTituloPagina(ConstantesMensagens.LABEL_ENTREVISTADOR);
    }

    public String abrirPagina() {
        inicializarPagina();
        return avancarParaPagina(ConstantesPaginas.ENTREVISTADOR_LISTAGEM_PAGE);
    }

    @Override
    public void inicializarPagina() {
        super.setOperacao(OperacaoEnum.LISTAGEM);
        super.filtro = new Filtro();
        this.entrevistadorFiltro = new Entrevistador();
        this.entrevistador = new Entrevistador();
        this.dataModel =
                new ListaObjetoPersistenteDataModel<Entrevistador>(filtro, entrevistadorService);
    }

    public void consultar() {
        filtro.clear();
        filtro.put("nome", entrevistadorFiltro.getNome());
        filtro.put("cpf", entrevistadorFiltro.getCpf());
        filtro.put("rg", entrevistadorFiltro.getRg());
    }

    public void salvar() {
        entrevistadorService.salvar(entrevistador);
        this.entrevistador = new Entrevistador();
        adicionarMensagemInfo(ConstantesMensagens.LABEL_ENTREVISTADOR);
    }

    public void alterar() {
        entrevistadorService.alterar(entrevistador);
        adicionarMensagemInfo(ConstantesMensagens.LABEL_ENTREVISTADOR);
    }

    public String excluir() {
        entrevistadorService.excluir(entrevistador);
        return voltarParaListagem();
    }

    public void limpar() {
        inicializarPagina();
    }

    public void limparFormulario() {
        this.entrevistador = new Entrevistador();
    }

    public String enviarParaInclusao() {
        super.setOperacao(OperacaoEnum.INCLUSAO);
        this.entrevistador = new Entrevistador();
        return avancarParaPagina(ConstantesPaginas.ENTREVISTADOR_CRUD_PAGE);
    }

    public String enviarParaAlteracao() {
        super.setOperacao(OperacaoEnum.ALTERACAO);
        return avancarParaPagina(ConstantesPaginas.ENTREVISTADOR_CRUD_PAGE);
    }

    public String enviarParaExclusao() {
        super.setOperacao(OperacaoEnum.EXCLUSAO);
        return avancarParaPagina(ConstantesPaginas.ENTREVISTADOR_CRUD_PAGE);
    }

    public String voltarParaListagem() {
        inicializarPagina();
        return avancarParaPagina(ConstantesPaginas.ENTREVISTADOR_LISTAGEM_PAGE);
    }

    // Gets and Sets

    public Entrevistador getEntrevistadorFiltro() {
        return entrevistadorFiltro;
    }

    public void setEntrevistadorFiltro(Entrevistador entrevistadorFiltro) {
        this.entrevistadorFiltro = entrevistadorFiltro;
    }

    public Entrevistador getEntrevistador() {
        return entrevistador;
    }

    public void setEntrevistador(Entrevistador entrevistador) {
        this.entrevistador = entrevistador;
    }

    public ListaObjetoPersistenteDataModel<Entrevistador> getDataModel() {
        return dataModel;
    }

    public void setDataModel(ListaObjetoPersistenteDataModel<Entrevistador> dataModel) {
        this.dataModel = dataModel;
    }

    public IEntrevistadorService getEntrevistadorService() {
        return entrevistadorService;
    }

    public void setEntrevistadorService(IEntrevistadorService entrevistadorService) {
        this.entrevistadorService = entrevistadorService;
    }
}
